﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using ProjControleDAL;
using ProjControleModelos;
namespace ProjControleBLL
{
   public class CompraBLL
    {
       CompraDAL objDAL;
        #region Métodos do produtos da compra
       public void carregaListaProdutos(Compra objC)
       {
           Itens_CompraBLL objItensCompra = new Itens_CompraBLL();
           Itens_Compra objIC = new Itens_Compra();
           DataTable tab = null;
           try
           {
               tab = objItensCompra.localizar(objC);
               objC.lProdutos.Clear();
               foreach (DataRow linha in tab.Rows)
               {
                   objIC.cod_compra = int.Parse(linha["cod_compra"].ToString());
                   objIC.cod_produto = int.Parse(linha["cod_produto"].ToString());
                   objIC.qtd_item = int.Parse(linha["qntd_itens_compra"].ToString());
                   objIC.val_unitario = Double.Parse(linha["valor_unitario"].ToString());
                   objIC.val_total_item = Double.Parse(linha["valor_total"].ToString());
                   objC.lProdutos.Add(objIC);
                   objIC = new Itens_Compra();
               }
           }
           catch (Exception ex)
           {
               
               throw ex;
           }
           objIC = null;
           objItensCompra = null;
       }
       public void cadastraProdCompra(Compra objC)
       {
           Itens_CompraBLL objItensCompra;
           try
           {
               foreach (Itens_Compra obj in objC.lProdutos)
               {
                   obj.cod_compra = objC.cod_compra;
                   objItensCompra = new Itens_CompraBLL();
                   objItensCompra.inserir(obj);
               }
           }
           catch (Exception ex)
           {

               throw ex;
           }
           objItensCompra = null;
       }
       public void carrega(Compra objC)
       {
           DataTable tab;
           Itens_CompraBLL objItensCompra;
           Itens_Compra objIC;
           try
           {
               objItensCompra = new Itens_CompraBLL();
               objIC = new Itens_Compra();
               tab = objItensCompra.localizar(objC);
               if (tab.Rows.Count > 0)
               {
                   objIC.cod_produto = int.Parse(tab.Rows[0]["cod_produto"].ToString());
                   objIC.qtd_item = int.Parse(tab.Rows[0]["qntd_itens_compra"].ToString());
                   objIC.val_unitario = Double.Parse(tab.Rows[0]["valor_unitario"].ToString());
                   objIC.val_total_item = Double.Parse(tab.Rows[0]["valor_total"].ToString());
                   carregaListaProdutos(objC);
               }

           }
           catch (Exception ex)
           {

               throw ex;
           }
           objItensCompra = null;
           objIC = null;
       }
        #endregion
        #region Métodos
       //inserir
       public void inserir(Compra objC)
       {
           try
           {
               if (objC.cod_fornecedor == 0 || objC.val_compra == 0)
                   throw new Exception("Campos Invalidos");
               else
               {
                   objDAL = new CompraDAL();
                   objDAL.inserir(objC);
                   cadastraProdCompra(objC);
               }
           }
           catch (Exception ex)
           {
               
               throw ex;
           }
           objDAL = null;
       }
       public void alterar(Compra objC)
       {
           try
           {
               if (objC.cod_compra == 0 || objC.cod_fornecedor == 0 || objC.val_compra == 0)
                   throw new Exception("Campos Invalidos");
               else
               {
                   objDAL = new CompraDAL();
                   objDAL.alterar(objC);
                   Itens_CompraBLL objItensCompra = new Itens_CompraBLL();
                   objItensCompra.excluirTodos(objC);
                   cadastraProdCompra(objC);
                   objItensCompra = null;
               }
           }
           catch (Exception ex)
           {
               
               throw ex;
           }
           objDAL = null;
       }
       public void excluir(Compra objC)
       {
           try
           {
               if (objC.cod_compra == 0)
                   throw new Exception("Campo invalido");
               else
               {
                   objDAL = new CompraDAL();
                   Itens_CompraBLL objItensCompra = new Itens_CompraBLL();
                   objItensCompra.excluirTodos(objC);
                   objDAL.excluir(objC);
                   objItensCompra = null;
               }
           }
           catch (Exception ex)
           {
               
               throw ex;
           }
           objDAL = null;
       }
       public Compra localizar(int codigo)
       {
           Compra objC = null;
           try
           {
               objDAL = new CompraDAL();
               objC = objDAL.localizar(codigo);
               carrega(objC);
           }
           catch (Exception ex)
           {
               
               throw ex;
           }
           objDAL = null;
           return objC;
       }
       public DataTable localizar(String fornecedor)
       {
           DataTable tab;
           try
           {
               objDAL = new CompraDAL();
               tab = objDAL.localizar(fornecedor);
           }
           catch (Exception ex)
           {
               
               throw ex;
           }
           objDAL = null;
           return tab;
       }
        #endregion
    }
}
